TOP

एसक्यूएल HAVING

YouLibreCalc for Excel logo

SQL HAVING विवरण

HAVING अभिव्यक्ति को SQL में जोड़ा गया था क्योंकि WHERE कीवर्ड का उपयोग समग्र कार्यों के साथ नहीं किया जा सकता है।

SQL HAVING का उपयोग GROUP BY कथन द्वारा बनाए गए समूहों द्वारा मानों को फ़िल्टर करने के लिए किया जाता है।


HAVING सिंटेक्स

SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
HAVING condition
ORDER BY column_name(s)

प्रदर्शन डेटाबेस

निम्नलिखित "Northwind" डेटाबेस की "Customers" ("ग्राहक") तालिका से एक नमूना है:

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.5021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.5023Mexico
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

SQL HAVING उदाहरण

निम्नलिखित SQL क्वेरी प्रत्येक देश में ग्राहकों की संख्या सूचीबद्ध करती है। केवल 5 से अधिक ग्राहकों वाले देश शामिल हैं:

Run SQLSELECT COUNT(CustomerID), Country 
FROM Customers 
GROUP BY Country 
HAVING COUNT(CustomerID) > 5

निम्नलिखित SQL क्वेरी प्रत्येक देश में ग्राहकों की संख्या को सबसे बड़े से सबसे छोटे क्रम में सूचीबद्ध करती है (इसमें केवल 5 से अधिक ग्राहकों वाले देश शामिल हैं):

Run SQLSELECT COUNT(CustomerID), Country 
FROM Customers 
GROUP BY Country 
HAVING COUNT(CustomerID) > 5 
ORDER BY COUNT(CustomerID) DESC

प्रदर्शन डेटाबेस

आइए तालिका "Orders" ("ऑर्डर") से एक नमूना देखें:

ProductIDOrderIDCustomerIDEmployeeIDOrderDateShipperID
1102489051996-07-043
2102498161996-07-051
3102503441996-07-082
4102518431996-07-081
5102527641996-07-092

और तालिका "Employees" ("कर्मचारी") से नमूना:

EmployeeIDLastNameFirstNameBirthDatePhotoNotes
1Davolio Nancy 12/8/1968 EmpID1.pic Education includes a BA in psychology from Colorado State University. She also completed (The Art of the Cold Call). Nancy is a member of 'Toastmasters International'.
2Fuller Andrew 2/19/1952 EmpID2.pic Andrew received his BTS commercial and a Ph.D. in international marketing from the University of Dallas. He is fluent in French and Italian and reads German. He joined the company as a sales representative, was promoted to sales manager and was then named vice president of sales. Andrew is a member of the Sales Management Roundtable, the Seattle Chamber of Commerce, and the Pacific Rim Importers Association.
3Leverling Janet 8/30/1963 EmpID3.pic Janet has a BS degree in chemistry from Boston College). She has also completed a certificate program in food retailing management. Janet was hired as a sales associate and was promoted to sales representative.
4Peacock Margaret 9/19/1958 EmpID4.pic Margaret holds a BA in English literature from Concordia College and an MA from the American Institute of Culinary Arts. She was temporarily assigned to the London office before returning to her permanent post in Seattle.
5Buchanan Steven 3/4/1955 EmpID5.pic Steven Buchanan graduated from St. Andrews University, Scotland, with a BSC degree. Upon joining the company as a sales representative, he spent 6 months in an orientation program at the Seattle office and then returned to his permanent post in London, where he was promoted to sales manager. Mr. Buchanan has completed the courses 'Successful Telemarketing' and 'International Sales Management'. He is fluent in French.

अधिक HAVING उदाहरण

निम्नलिखित SQL क्वेरी उन कर्मचारियों को सूचीबद्ध करती है जिन्होंने 10 से अधिक ऑर्डर पंजीकृत किए हैं:

Run SQLSELECT Employees.LastName, COUNT(Orders.OrderID) AS NumberOfOrders 
FROM (Orders 
INNER JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID) 
GROUP BY LastName 
HAVING COUNT(Orders.OrderID) > 10

यदि "डेवोलियो" या "फुलर" कर्मचारियों ने 25 से अधिक ऑर्डर पंजीकृत किए हैं, तो निम्न SQL कथन डेटा प्रदर्शित करता है:

Run SQLSELECT Employees.LastName, COUNT(Orders.OrderID) AS NumberOfOrders 
FROM Orders 
INNER JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID 
WHERE LastName = 'Davolio' OR LastName = 'Fuller' 
GROUP BY LastName 
HAVING COUNT(Orders.OrderID) > 25